/*
 * D-Bus Java Implementation Copyright (c) 2005-2006 Matthew Johnson This
 * program is free software; you can redistribute it and/or modify it under the
 * terms of either the GNU Lesser General Public License Version 2 or the
 * Academic Free Licence Version 2.1. Full licence texts are included in the
 * COPYING file with this program.
 */
package org.freedesktop.dbus.test;

import org.freedesktop.dbus.DBusConnection;
import org.freedesktop.dbus.DBusSigHandler;

public class two_part_test_server implements TwoPartInterface, DBusSigHandler<TwoPartInterface.TwoPartSignal> {
  public class two_part_test_object implements TwoPartObject {
    public String getName() {
      System.out.println("give name");
      return toString();
    }

    public boolean isRemote() {
      return false;
    }
  }

  public static void main(String[] args) throws Exception {
    DBusConnection conn = DBusConnection.getConnection(DBusConnection.SESSION);
    conn.requestBusName("org.freedesktop.dbus.test.two_part_server");
    two_part_test_server server = new two_part_test_server(conn);
    conn.exportObject("/", server);
    conn.addSigHandler(TwoPartInterface.TwoPartSignal.class, server);
    while (true) {
      try {
        Thread.sleep(10000);
      } catch (InterruptedException Ie) {
      }
    }
  }

  private DBusConnection conn;

  public two_part_test_server(DBusConnection conn) {
    this.conn = conn;
  }

  public TwoPartObject getNew() {
    TwoPartObject o = new two_part_test_object();
    System.out.println("export new");
    try {
      conn.exportObject("/12345", o);
    } catch (Exception e) {
    }
    System.out.println("give new");
    return o;
  }

  public void handle(TwoPartInterface.TwoPartSignal s) {
    System.out.println("Got: " + s.o);
  }

  public boolean isRemote() {
    return false;
  }
}
